
// 0、导入axios
import axios from 'axios'

// 1、设置axios请求参数
// axios.defaults.timeout = 5000; //请求超时5秒
// axios.defaults.baseURL = ''; //请求base url
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; //设置post请求是的header信息

// 2、创建axios实例
const service = axios.create({
  baseURL: 'http://localhost:8888',// 所有的请求地址前缀部分
  timeout: 5000, //响应时间
})

// 3、请求拦截器
service.interceptors.request.use(config => {
    // 每次发送请求之前，此处做校验
    console.log("请求拦截器1调用成功");
    let token = sessionStorage.getItem('token')
    if (token) { // 判断是否存在token，如果存在的话，则每个http header都加上token
        config.headers = {
            'X-token': token
        }
    }
    return config
}, error => {
    console.log("请求拦截器1调用失败");
    return Promise.reject(error)
})

// 4、响应拦截器
service.interceptors.response.use(response => {
    // 如果返回的状态码为200，说明接口请求成功，可以正常拿到数据
    // 否则的话抛出错误
    if (response.status === 200) {
        console.log("响应拦截器1调用成功");
        if (response.data.code === 511) {
            // 未授权调取授权接口
        } else if (response.data.code === 510) {
            // 未登录跳转登录页
        } else {
            return Promise.resolve(response)
        }
    } else {
        return Promise.reject(response)
    }
}, error => {
    // 我们可以在这里对异常状态作统一处理
    if (error.response.status) {
        // 处理请求失败的情况
        // 对不同返回码对相应处理
        console.log("响应拦截器1调用失败");
        return Promise.reject(error.response)
    }
})

// 5、导出实例
export default service